package top.itbook.util.scanner;

import java.util.Scanner;

/**
 * 工具类：
 *  由用户输入一个数据。返回Int型数据。
 */
public class InputInt {
    public static int obtainInput(){
        Scanner scanner = new Scanner(System.in);
        // 使用死循环循环录入输入，直到正确时退出
        while(true){
            // 捕获并拦截异常
            try{
                String userInput = scanner.nextLine();
                if (userInput.equals("")){
                    // 如果字符串为空格则要求重新输入
                    System.out.print("您输入的信息有误，请重新输入：");
                    continue;
                }
                // 转换成int类型数据
                int output = Integer.parseInt(userInput); // parseInt底层已做非空校验
                if (output < 0){
                    scanner.close(); // 关闭资源以重新生成资源以应对缓冲区问题，牺牲一定资源以防出现稀奇古怪的BUG
                    scanner = new Scanner(System.in);
                    System.err.print("您输入的数小于0，请您重新输入：");
                    continue; // 代码冗余 - 添加此行代码以增加程序可读性
                }
                else
                {
                    // 返回正确的数值
                    return output;
                }
            }catch(Exception exception){
                // 打印异常栈信息
                exception.printStackTrace();
                System.err.println("对不起，您输入的数据有误，请检查后重新输入！若确认输入无误，请将以上报错反馈至软件开发者！");
                System.out.println("请重新输入：");
            }
        }
    }
}
